package com.whosly.strategy.factory;

import com.whosly.strategy.IStrategy;

/**
 * 策略管理器，用于策略管理，检查常用策略管理，如默认方法等
 *
 *
 * @author <a href="mailto:yueny09@126.com"> 袁洋 2014年11月26日
 */
public interface IStrategyFactory {
	/**
	 * 根据策略类型及条件获取策略
	 *
	 * @param <D>
	 *            策略枚举类型
	 * @param <T>
	 *            策略接口
	 *
	 * @param strategyClass
	 *            策略类型
	 * @param condition
	 *            条件
	 * @return 该策略类型下满足指定条件的策略
	 */
	<D, T extends IStrategy<D>> T getStrategy(final Class<T> strategyClass,
			final D condition);

}
